# -*- coding: utf-8 -*-
# @File : homePage.py
# @Time : 2024/5/18 10:30
# @Author : syq
# @Email : 1721169065@qq.com
# @Software: PyCharm
import re
import time

from 公司大屏项目.pages.basePage import BasePage
from 公司大屏项目.config.config import page
class HomePage(BasePage):
    def to_page(self):
        """
        访问此页面的网址
        不必要预先定义页面的打开顺序，因为这样会让整个业务逻辑变得过于复杂
        考虑到我们手工测试的时候，就是执行到哪一个步骤，需要访问网址
        就去输入网址并回车访问
        所以，我们在每个页面类定义一个访问当前页面的函数
        需要用到的时候，就调用
        这个逻辑比写在初始化方法里边更简洁，更容易实现和维护
        :return:
        """
        #输入网址
        self.browserPage.goto(page['homePage'])
    def project_area_select_box(self):

        """区域选择-选择淳安县"""
        # return self.browserPage.locator("div[class='footer flex']>.left>div:nth-child(12)")  #这样写会报错，因为该页面有iframe
        # return self.browserPage.frame_locator("iframe").get_by_text("淳安县")
        # 说明：使用frame_locator()定位到iframe上，再在上面使用locator方法定位元素
        return self.browserPage.frame_locator('iframe').locator("div[class='footer flex']>.left>div:nth-child(12)")

    def project_all_select_box(self):
        """全选按钮定位"""
        # return self.browserPage.frame_locator("iframe").locator("label").filter(has_text="全选")
        return self.browserPage.frame_locator("iframe").locator(".right>div:nth-child(2)+label>span:nth-child(2)")
    def project_send_select_box(self):
        """定位发送通道按钮"""
        return self.browserPage.frame_locator("iframe").locator(".alarm-control div[class='el-input el-input--suffix']>input")
        # return self.browserPage.frame_locator("iframe").locator("div").filter(has_text=re.compile(r"^发送通道：北斗无线有线NB$")).get_by_placeholder("请选择")

    def project_sendType_select_box(self):
        """通道选择-北斗，无线，有线，nb"""
        return self.browserPage.frame_locator('iframe').get_by_text("北斗") #选择北斗
    def project_blank_page_box(self):
        """点击任意一个地方 通道选择有一个框弹出，点击任意一处，是为了让该弹框消失"""
        """定位的是 警报总数 回示个数 异常个数 回示率这个框"""
        return self.browserPage.frame_locator('iframe').locator('.center-b')
    def project_gate_select_box(self):
        """定位分闸控制"""
        return self.browserPage.frame_locator('iframe').locator(".work-order div[class='item-btn flex items-center']")
    def project_gateType_select_box(self):
        """定位喇叭分闸"""
        return self.browserPage.frame_locator('iframe').locator(".work-order >div:nth-child(2)>div:nth-child(2) .control-name")
    def project_submit_select_box(self):
        """发送指令后，弹出一个弹框，定位确认按钮"""
        return self.browserPage.frame_locator('iframe').locator(".el-dialog__body>div:nth-child(3)>button:nth-child(1)")
class HomePageAction(HomePage):
    #页面的动作类省略没写
    pass
if __name__ == '__main__':
    homePageActhion=HomePageAction()
    homePageActhion.to_page()
    #点击淳安县
    homePageActhion.project_area_select_box().click()
    #点击全选按钮
    homePageActhion.project_all_select_box().click()
    #点击发送通道的输入框
    homePageActhion.project_send_select_box().click()
    #选择通道 北斗
    homePageActhion.project_sendType_select_box().click()
    #点击任意一处
    homePageActhion.project_blank_page_box().click()
    #分闸控制
    homePageActhion.project_gate_select_box().click()
    #选择喇叭分闸断开
    homePageActhion.project_gateType_select_box().click()
    # #点击确定按钮 再playwright中点击喇叭分闸断开后，弹出的弹框啥内容也不显示---原因没有找到
    homePageActhion.project_submit_select_box().click()
    homePageActhion.browserPage.wait_for_timeout(5000) #看效果

